function [ret1, ret2] = euler(fun, slot, init, opt)
	sol = struct("x", [slot(1)], "y", [init], "solver", "euler");
	h = opt.InitialStep;
	for x = slot(1)+h:h:slot(2)
		sol.x = [sol.x; x];
		init = init + h * fun(x, init);
		sol.y = [sol.y; init];
	end
	switch (nargout)
		case 0
			plot(sol.x, sol.y);
		case 1
			ret1 = sol;
		case 2
			ret1 = sol.x;
			ret2 = sol.y;
	end
end

